Lecture 16 — exploring the software build cycle, writing effective test cases, deep diving into automation testing tools, and revisiting the IBM Case Study on continuous testing.
A build is the process of converting human-readable source code into a standalone, executable artifact that can be deployed to a server. It includes fetching dependencies, compiling code, running static analysis, and packaging everything together (e.g., into a .jar or a Docker image).
A specific set of conditions or variables under which a tester will determine whether an application satisfies requirements. Good test cases are deterministic: they have a clear setup, execution, and an unambiguous Pass/Fail expected outcome.
login() function).A simple Java JUnit test demonstrating Arrange, Act, Assert.
| Tool | Type / Target | Language / Characteristics |
|---|---|---|
| Selenium | UI / Web (E2E testing) | Supports Java, Python, C#. The industry standard for browser automation, but can be slow and flaky. |
| Cypress | UI / Web (Modern E2E) | JavaScript only. Runs directly in the browser, offering much faster execution and easier debugging than Selenium. |
| Appium | Mobile (iOS / Android) | Essentially Selenium for mobile apps. Supports native and hybrid mobile testing. |
| Postman / RestAssured | API / Integration testing | Tests RESTful APIs without UI overhead. Extremely fast and reliable. |
| JUnit / TestNG | Unit Testing (Java) | The foundation of the testing pyramid for Java applications. |
"If you write 100 UI tests, you will spend more time fixing the tests than fixing the bugs they find." — The reason the Testing Pyramid exists
The script clicks a button, but the page hasn't finished loading. The test fails (False Negative) even though the app works.
The UI test looks for a button with ID #login-btn-blue. A developer renames it to #login-btn-new. The test breaks instantly.
E2E tests require complex database states. If Test B runs before Test A, it might delete the data Test A needs to run.
git pull, npm install, pm2 restart.We saw in Lecture 13 that IBM moved from weekly, painful releases to multiple deployments per day using CI/CD. But how did they ensure quality when moving that fast? The answer was transforming their testing strategy.
Developers knew if their code broke the build within 15 minutes, not 3 days.
Using API (Gray-box) testing, they could automatically test contracts between hundreds of services.
Because tests were trusted, deployments to production became entirely script-driven.
The ultimate lesson: You cannot achieve Continuous Deployment without Continuous Testing. Test automation is the prerequisite for speed.
Wait, the plan says Unit VII starts! Issue tracking tools: Bugzilla, GitLab Tracker, Jira; Types of bugs and classification.
We've conquered Testing and Deployment. Unit VII will wrap up the course with Issue Tracking and emerging tech in DevOps.